| Ограничение времени | 1 секунда |
| Ограничение памяти | 1024 Мб |
| Ввод | стандартный ввод или input.txt |
| Вывод | стандартный вывод или output.txt |
Максимальная оценка за эту задачу — 40 баллов, на проверку необходимо сдавать программу, решающую задачу
РНК можно рассматривать как длинную цепочку, составленную из нуклеотидов. В этой задаче нуклеотидом будем называть один из символов ‘U’, ‘C’, ‘A’, ‘G’. Три подряд идущих нуклеотида образуют кодон (порядок нуклеотидов в кодоне важен). Каждому кодону соответствует некоторая аминокислота, при этом нескольким различным кодонам может соответствовать одна и та же аминокислота:
Соответствие кодонов аминокислотам
Выберем первый нуклеотид в центре, далее будем переходить на следующее кольцо по соответствующему нуклеотиду, соседнему со стороной фигуры.
Например, «AUG» — это кодон, который соответствует аминокислоте ‘M’.
Обратите внимание, что старт кодон выглядит как «AUG», а стоп кодон — это один из вариантов: «UAA», «UAG», «UGA».
Будем говорить, что белок — это последовательность аминокислот, которая начинается с аминокислоты ‘M’ и заканчивается одной из аминокислот, являющихся стоп-кодоном (такие аминокислоты обозначены в таблице кружком). Стоп-кодон не может встречаться в середине белка. Аминокислота ‘M’, напротив, может встречаться несколько раз.
Биолог исследует белок длины . При синтезе РНК произошла ошибка: в неё было вставлено ещё нуклеотидов в произвольные места. В результате получилась последовательность из нуклеотидов, и биолог хочет восстановить какой-нибудь белок длины .
В первой строке записано одно целое число — количество наборов входных данных. В этой версии задачи во всех тестах .
Во -й строке записаны два целых числа и ( , ).
В -й строке записана строка длины , которая является последовательностью нуклеотидов. Гарантируется, что строка содержит только символы ‘U’, ‘C’, ‘A’, ‘G’.
Выведите строк, в каждой из них различных целых чисел — номера удаляемых нуклеотидов в тесте . Номера можно выводить в любом порядке.
В этой версии задачи тестов помимо тестового примера из условия, каждый оценивается в балл. Тестовый пример не оценивается.
Длина восстановленного белка определяется следующим образом.
Рассмотрим строку, полученную после удаления некоторых нуклеотидов, и разобьём её на кодоны. Затем найдём первое вхождение старт-кодона и первое вхождение стоп-кодона, расположенное после него. Тогда длиной белка будем считать количество аминокислот от ‘M’ до этого стоп-кодона включительно.
Количество баллов за тест определяется по формуле
Обратите внимание, что если у вас выполнится одно из трёх условий:
Нет ни одного старт кодона
Нет ни одного стоп кодона
Все старт кодоны находятся после всех стоп кодонов
То вы получите баллов за тест.
| Подзадача | Баллы | Доп. ограничения | |
|---|---|---|---|
| 0 | 0 | тесты из условия | |
| 1 | 8 | , | |
| 2 | 8 | ||
| 3 | 8 | ||
| 4 | 8 | ||
| 5 | 8 | Вставка происходит только между соседними кодонами |
| Ввод | Вывод |
|---|---|
1 2 1 AUUGUGA | 3 |
Для удобства обозначим стоп кодон как ‘e’.
В первом примере после удаления нуклеотидов под номером получим последовательность нуклеотидов AUGUGA, разобьём её на кодоны AUG, UGA — это соответствует белку Me. Его длина равна 2.